通常一個終端機(terminal 或 console)只能開啓一個互動式(interactive)的 shell 來使用,而藉著 screen 的幫助,使用者可以在一個終端機下,同時開啓多個互動式的 shell,除了自己使用之外,還可以讓 session 分享給不同的使用者,或是讓執行中的 session 暫時卸離(detach),隨後再重新連接(attach)即可繼續操作。
screen 指令是一般 UNIX/Linux 使用者或管理者常會使用的終端機管理程式,可以讓一個終端機當成好幾個來使用。
[安裝 screen]
安裝:適合的作業系統(Debian/Ubuntu)sudo apt-get install screen
安裝:適合的作業系統(Red Hat/Fedora)yum install screen
[開始使用]
執行指令,這時候會出現一些訊息,按下空白鍵跳過之後,就可以看到一個新的 shell。進入 screen 所建立的新 shell 之後,看起來跟原本的畫面一模一樣,但是它其實是一個新開啟的 shell,而在離開 screen 環境之後,就會回到原本的 shell 中。screen
離開終端機 sessionexit
screen 控制指令可以使用 Ctrl + ? 來查詢線上的操作說明。Ctrl + ?
[將 screen 卸離(Detach)與重新連接(Re-attach)]
使用 screen 最大的好處之一就是可以將其卸離,而在重新連接之後完全不會影響正在執行中的任何工作。
以 ping指令來示範如何將執行中的工作卸離,然後再重新連接。一開始先執行screen
使用 ping 來示範的原因是因為它在執行之後就會不斷的送出 ICMP 封包,直到使用者按下 Ctrl + c 為止,所以它可以一直執行下去不會中斷,方便我們測試 screen 的卸離功能。
接著使用者就可以按下 Ctrl + a 後,再按下 d 鍵(detach),這時候整個 screen 就會被卸離
若要重新連接上 ping 這個 screen,可以執行,這樣就會回到之前的 screen 環境中,這時候你也可以看到 ping 指令還在執行,並沒有受到影響。screen -r
[同時使用多個 screen 工作環境]
如果只有一個 screen 工作環境不夠用,也可以將現有的 screen 工作環境卸離後,在原來的 shell 中再執行一次 screen 指令,建立另外一個新的 screen 環境來使用
Ctrl + a 後,再按下 d 鍵(detach)
screen
如果在同一時間有好多個 screen 工作環境都處於卸離狀態,則在重新連接時可以使用screen -ls
初初結果
pi@MyPi2:~ $ screen -ls
There are screens on:
1394.pts-0.MyPi2 (廿十七年十一月三日 十一時廿八分二秒) (Attached)
1383.pts-0.MyPi2 (廿十七年十一月三日 十一時廿六分十三秒) (Detached)
2 Sockets in /var/run/screen/S-pi.
若要連接第一個 1394.pts-0.MyPi2 這個 screen 工作環境,則在 -r 參數之後加上這個名稱即可:screen -r 1383.pts-0.MyPi2
若嫌指令太長,可將指令改為screen -r 1383
[使用多個 screen 視窗]
若要同時使用多個互動式 shell,最方便的方式是在一個 screen 工作環境中建立多個「視窗」,而每一個視窗都可以提供一個獨立的 shell 給使用者進行互動式的操作,這樣的作法會比使用多個 screen 工作環境方便,尤其是在切換不同的 shell 時不用卸離再重新連接。
建立一個新的視窗,並出現一個獨立的互動式 shellCtrl + a 後,再按下 c 鍵(create)
在不同的視窗之間切換,可以按下 Ctrl + a 後,再按下 n 鍵(next),這樣就會切換至下一個視窗
切換前一個視窗Ctrl + a 後,再按下 n 鍵(next)
切換下一個視窗Ctrl + a 後,再按下 p 鍵(previous)
[紀錄所有動作]
screen 除了提供獨立的工作環境之外,它還可以把使用者所有的動作記錄下來。
按下 Ctrl + a 後 (放開),再按下 H 鍵(請注意這裡是大寫的 H,也就是要按著 Shift 鍵再按 h 鍵)
畫面下方會出現以下資訊:Creating logfile “screenlog.0“
結束記錄功能再按一次 Ctrl + a 與 H 鍵即可
[鎖定 screen 螢幕]
如果在使用 screen 管理伺服器時,要暫時離開電腦,也可以使用 screen 的螢幕鎖定功能,當要鎖定螢幕時可按下 Ctrl+ a 後,再按下 x 鍵,這樣螢幕就會被鎖住
[離開 screen 工作環境]
若要離開 screen 工作環境有幾種不同的方式:
如果工作還沒做完,想要暫時離開,卸離功能(Ctrl+ a 與 d)
如果是工作都已經做完了,當 screen 工作環境中所有的 shell 都結束後,screen 會自動結束。exit 指令離開整個 shell 環境
直接關閉整個 screen 工作環境Ctrl + a 與 k(kill)
[screen 參數與操作指令速查表]
screen 參數表:
screen 參數
說明
-c file
使定使用的設定檔(預設為 $HOME/.screenrc)
-d [pid.tty.host]
強制將指定的 screen 工作環境卸離
-L
開啟自動紀錄功能
-ls 或 -list
列出目前所有執行中的 screen 工作環境
-r [pid.tty.host]
重新連接執行中的 screen 工作環境
-R
重新連接最近卸離的 screen 工作環境
-U
以 UTF-8 模式執行
-wipe [match]
將廢棄的 screen 工作環境清除
screen 操作指令表:
screen 參數
說明
Ctrl + a 與 c
建立新 screen 視窗
Ctrl + a 與 Ctrl+ a
切換至上一個 screen 視窗
Ctrl + a 與數字鍵 0 到 9
切換至指定編號的 screen 視窗
Ctrl + a 與 n
切換至下一個的 screen 視窗
Ctrl + a 與 p
切換至下一個的 screen 視窗
Ctrl + a 與 w
列出目前所有的 screen 視窗
Ctrl + a 與 "
列出目前所有的 screen 視窗,並可用上下鍵選擇要切換的設窗
Ctrl + a 與 k
關閉目前的 screen 視窗
Ctrl + a 與 d
卸離 screen 工作環境
Ctrl + a 與 Esc鍵(或 Ctrl + a 與 [)
進入複製模式(copy mode),可用方向鍵操作捲軸,或用 / 與 ? 來搜尋,按下空白鍵開始選取要複製的內容,選取完成後再按下第二次空白鍵,即可複製,隨後使用 Ctrl + ] 可貼上複製的內容。
Ctrl + a 與 S
將畫面分割成上下兩個區域
Ctrl + a 與 Q
關閉分割畫面
Ctrl + a 與 Tab鍵
切換分割畫面
Ctrl + a 與 t
顯示目前系統的時間與負載狀況
Ctrl + a 與 a
送出 Ctrl + a
Ctrl + a 與 ?
顯示說明
Ctrl + a 與 v
顯示版本資訊
Ctrl + a 與 x
鎖定 screen 螢幕
Ctrl + a 與 H
開啟或結束 screen 紀錄功能
Ctrl + a 與 C
清除 screen 視窗中的內容
Ctrl + a、D 與 D
強力卸離,卸離 screen 工作環境之後,直接登出
Ctrl + a 與 Ctrl+ g
視覺化鈴聲(visual bell)切換
Ctrl + a 與 i
顯示目前 screen 視窗的資訊
Ctrl + a 與 l
重繪目前 screen 視窗的內容